package com.gouwudai.gobbs.service;

import java.util.Date;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

import com.gouwudai.gobbs.common.IPageList;
import com.gouwudai.gobbs.pojo.TbbsTopic;
import com.litt.core.common.PageParam;
import com.litt.core.exception.BusiException;
import com.litt.core.exception.DBException;

/**
 * <pre>
 *  Title:TODO
 *  Description: TODO  
 * </pre>
 * 
 * @author <a href="mailto:littcai@hotmail.com">空心大白菜</a>
 * @date 2007-3-29
 * @version 1.0
 * <pre>
 * 修改记录
 *    修改后版本:     修改人：  修改日期:     修改内容: 
 * </pre>
 */
public interface ITopicService {

	/**
	 * 新建主题
	 * @param paramMap
	 * @return
	 */
	String saveTopic(HashMap paramMap);

	/**
	 * 回复主题
	 * @param paramMap
	 * @return
	 */
	void doReTopic(HashMap paramMap);

	/**
	 * 编辑主题
	 * @param paramMap
	 * @return
	 */
	void doEditTopic(HashMap paramMap) throws BusiException;

	/**
	 * 逻辑删除主题或回复
	 * @param paramMap
	 * @return
	 */
	void deleteTopicLogic(HashMap paramMap);

	TbbsTopic load(Integer id);

	/**
	 * 主题表的浏览次数累加
	 * @param topicId
	 * @throws DBException
	 */
	void updateTopicViewCount(Integer topicId);

	/**
	 * 主题表的回复次数累加
	 * @param topicId
	 * @param lastReUser
	 * @param lastReTime
	 * @throws DBException
	 */
	void updateTopicReCount(Integer topicId, String lastReUser, Date lastReTime);

   
    /**
     * 审核多个主题
     * @param topicIds 用逗号分隔好的topicId
     */
    public void doCheckTopic(String topicIds);

	/**
	 * 修改主题类型
	 * @param topicId
	 * @throws DBException
	 */
	void updateTopicPro(Integer topicPro, Integer topicId);

	/**
	 * 逻辑删除主题
	 * @param topicId
	 * @throws DBException
	 */
	void deleteLogic(String topicIds);

	/**
	 * 恢复已删除主题
	 * @param topicId
	 * @throws DBException
	 */
	void doResume(String topicIds);


    /**
     * 物理删除主题
     * @param topicIds
     */
    public void delete(String topicIds);

	/**
	 * 查询当前版面的主题信息
	 * @param classId
	 * @param pageIndex
	 * @param pageSize
	 * @return
	 * @throws DBException
	 */
	List listByClass(Integer classId,String menuStyle, int pageIndex, int pageSize);

	/**
	 * 查询当前版面的主题信息数量（供分页）
	 * @param classId
	 * @param pageIndex
	 * @param pageSize
	 * @return
	 * @throws DBException
	 */
	int listCountByClass(Integer classId,String menuStyle);

	/**
	 * 根据主题属性查询
	 * @param topicPro
	 * @param size
	 * @return
	 * @throws DBException
	 */
	List listByPro(Integer topicPro, int size);

	IPageList listPage(PageParam pageParam);
    
    /**
     * 回收站查询
     * @param pageParam
     * @return IPageList
     */
    IPageList listRecycle(PageParam pageParam);


    public void AutoBindingTable(javax.servlet.http.HttpServletRequest request);
    
    public void AutoBindingRecycleTable(javax.servlet.http.HttpServletRequest request);
    
    /**
     * 后台文章管理表格查询
     * @param request
     */
    public void listManagePage(javax.servlet.http.HttpServletRequest request);
    

	/**
	 * 查询最新的10个主题
	 * @return
	 * @throws DBException
	 */
	List listTop10();

	/**
	 * 查询我发表的主题或回复
	 * @param userId 用户ID
	 * @param type -  0.我的主题,1.我的回复
	 * @param pageIndex
	 * @param pageSize
	 * @return
	 * @throws DBException
	 */
	List listMyTopic(int userId, int type, int pageIndex, int pageSize);

	/**
	 * 查询我发表的主题或回复
	 * @param userId 用户ID
	 * @param type - 0.我的主题,1.我的回复
	 * @return
	 * @throws DBException
	 */
	int listCountMyTopic(int userId, int type);
    
    /**
     * 主题管理.
     * 
     * @param paramMap 参数映射
     */
    public void doTopicManage(Map paramMap);

}